package fr.cdesire.sudoku.core.exceptions;

import fr.cdesire.sudoku.core.commons.Position;

/**
 * Exception levée lorsque la grille de Sudoku n'est pas valide (une même
 * valeur est trouvée sur 2 cases partageant la même ligne ou la même
 * colonne ou la même région). Les positions des 2 cases invalides sont 
 * remontées. 
 * 
 * @author cedric.desire@gmail.com
 */
public class GrilleInvalideException extends SudokuCoreException {
	
	/**
	 * Position de la première case invalide.
	 */
	private Position premierePosition;
	
	/**
	 * Position de la deuxième case invalide.
	 */
	private Position secondePosition;

	/**
	 * Serial ID.
	 */
	private static final long serialVersionUID = -4126293786706407624L;
	
	/**
	 * Constructeur.
	 * 
	 * @param position1 Position de la première case invalide.
	 * @param position2 Position de la seconde case invalide.
	 */
	public GrilleInvalideException(Position premierePosition, Position secondePosition) {
		
		super();
		this.premierePosition = premierePosition;
		this.secondePosition = secondePosition;
	}
	
	/**
	 * Retourne la position de la première case invalide.
	 * @return Position de la première case invalide.
	 */
	public Position getPremierePosition() {
		return premierePosition;
	}

	/**
	 * Retourne la position de la seconde case invalide.
	 * @return Position de la seconde case invalide.
	 */
	public Position getSecondePosition() {
		return secondePosition;
	}
}
